package com.icbc.open.chengdu.demo.account.query;

import com.csii.pp.icbc.util.MD5Util;
import com.csii.pp.icbc.util.Util;
import com.icbc.api.DefaultIcbcClient;
import com.icbc.api.internal.util.internal.util.fastjson.JSON;
import com.icbc.open.chengdu.demo.BaseData;
import com.icbc.open.chengdu.demo.utils.GenerateKeyUtils;

import com.icbc.api.request.SettlementAccountDetailQueryRequestV1;
import com.icbc.api.request.SettlementAccountDetailQueryRequestV1.SettlementAccountDetailQueryRequestV1Biz;
import com.icbc.api.response.SettlementAccountDetailQueryResponseV1;
import com.icbc.open.chengdu.demo.utils.SecretUtils;

/**
 *结算账户交易明细
 *提供合作方查询我行个人结算账户交易明细，查询条件是卡号、开始日期、结束日期，查询结果的多条记录按交易时间倒序排序，一次最多查询10条记录
 *
 * @author xcz
 */
public class SettlementAccountDetailQueryTest {
	public static void main(String[] args) throws Exception {
		String sm4Key = GenerateKeyUtils.generateSM4Key(); //生成SM4密钥
		DefaultIcbcClient client = new DefaultIcbcClient(BaseData.APP_ID, BaseData.MY_RSA_PRIVATE_KEY, BaseData.ICBC_RSA_PUBLIC_KEY);
		SettlementAccountDetailQueryRequestV1 request = new SettlementAccountDetailQueryRequestV1();
		request.setServiceUrl(BaseData.ACCOUNT_DETAIL_QUERY_URL);
		SettlementAccountDetailQueryRequestV1Biz bizContent = new SettlementAccountDetailQueryRequestV1Biz();
		bizContent.setCorpNo(BaseData.APP_ID); //合作方机构编号
		bizContent.setTrxAccDate(BaseData.TEST_TRX_ACC_DATE);//合作方交易日期
		bizContent.setTrxAccTime(BaseData.TEST_TRX_ACC_TIME);//合作方交易时间
		bizContent.setCorpSerno(Util.getNonceStr(16)); //合作方交易单号
		bizContent.setCorpDate(BaseData.TEST_CORP_DATE); //合作方工作日期
		bizContent.setOutServiceCode("querydetail"); //外部服务代码
		bizContent.setMediumId(SecretUtils.encryptSM4(sm4Key, BaseData.TEST_ACCOUNT_NUMBER_2)); //工行联名卡号
		bizContent.setCcy(1); //币种
		bizContent.setBeginDate("2016-08-23"); //开始日期
		bizContent.setEndDate("2019-08-23"); //结束日期
		bizContent.setQueryMode(1); //查询方式1-首次查询2-上一页3-下一页
		bizContent.setPage(1); //页码（首次查询送1，下一页加1，上一页减1）  
		bizContent.setPnBusidate("2017-08-23"); //上次入账日期（翻页时必输，查询上页送上页查询结果第一条记录的入账日期，查询下页送最近一次查询结果最后一条记录的入账日期）
		bizContent.setPnRowRecord("12344566"); //翻页条件记录（翻页时必输，查询上页送上页查询结果第一条记录的翻页条件，查询下页送最近一次查询结果最后一条记录的翻页条件）
		bizContent.setSecretKey(SecretUtils.encryptSM2(sm4Key));//密钥
		bizContent.setMediumIdHash(MD5Util.string2MD5(BaseData.TEST_ACCOUNT_NUMBER_2));//联名卡的hash值
		request.setBizContent(bizContent);
		SettlementAccountDetailQueryResponseV1 response = client.execute(request);
		System.out.println(JSON.toJSONString(response));
		if (response.isSuccess() && response.getReturnCode() == 0) {
			// 业务成功处理
		} else {
			// 失败
		}

	}

}
